//
//  TableViewController.m
//  ExpandCellDemo
//
//  Created by Derek on 16/7/12.
//  Copyright © 2016年 huangxu. All rights reserved.
//

#import "TableViewController.h"
#import "ExpandCell.h"


@interface TableViewController ()<ExpandCellDelegate>
@property (copy, nonatomic) NSArray * dataSource;
@property (strong, nonatomic) NSMutableArray * expandStatus;

@end

CGFloat const defalutLabelHeight = 75.f;

@implementation TableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.dataSource = [NSArray arrayWithObjects:
                       @"For UILabel on the iPhone, there is a property for horizontal text alignment which is textAlignment. But when I have a label that can hold 2 lines (numberOfLines = 2), when the text in the label is only one line, that line centers itself in the entire frame (that can hold two lines), when there are two lines, they both fit fine.",
                       @"比较郁闷的是，UILabel并不提供设置其垂直对齐方式的选项。所以如果你想让你的文字顶部对齐，那么就需要自己想办法了。 stackoverflow.com 上提供了几种方法来达到顶部对齐的效果。",
                       @"在信息时代，大学已经不再能够垄断知识了，但大学所代表的人类理性思维，却变得更加重要，更加不可或缺！大学帮助学生学习和了解人类文明的精髓，培养跨文化、跨文明的思维能力与交流能力，使他们具有宽广的视野和正确的历史观；大学培养学生独立思考，使他们明辨是非、坚持真理，而不是人云亦云、随波逐流；大学应当使学生牢固树立核心价值观和社会责任感，让学生们懂得，简单的拿来主义并不能解决中国的问题，民粹和狭隘民族主义也不行，我们要探索出一条中国自己的道路。",
                       @"来看看劳动法克林顿刷卡思考对方卡拉卡斯的楼房卡拉卡斯的疯狂拉萨的罚款 ",
                       @"习近平强调，中欧要用大智慧增强战略互信，最根本的是要抓住世界多极化、经济全球化发展的必然趋势，抓住各国人民对和平与发展的共同诉求，坚持走合作共赢之路。中方支持欧盟和欧洲一体化进程的政策不会改变，乐见繁荣和稳定的欧盟和英国，愿同欧方继续携手致力于和平与发展。中欧要用大视野拓展合作。欢迎欧方积极参与“一带一路”建设，双方要加强发展战略对接，加强交流互鉴和互利合作，推动彼此合作迈向更高端。中欧要用大胸怀化解难点问题。双方要坚持相互尊重、平等相待的原则，以建设性方式管控和减少分歧。",
                       @"2000(元)÷21.75(天)×200％×1(天)=183.9(元)",nil];
    self.expandStatus = [NSMutableArray arrayWithObjects:@(NO), @(NO), @(NO), @(NO), @(NO), @(NO), nil];
    self.tableView.estimatedRowHeight = 128.f;
    self.tableView.rowHeight          = UITableViewAutomaticDimension;
    self.tableView.tableFooterView    = [UIView new];
    
}


#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataSource.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellId = @"ExpandCell";
    ExpandCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
    if (!cell) {
        cell = [[[NSBundle mainBundle]loadNibNamed:@"ExpandCell" owner:self options:nil]lastObject];
    }
    NSString * showStr = _dataSource[indexPath.row];
    cell.showStr       = showStr;
    cell.delegate      = self;
    BOOL isEXpand = [[self.expandStatus objectAtIndex:indexPath.row]boolValue];
    if (isEXpand) {
        cell.lbShowTextConstraintHeight.constant = [self heightWithText:showStr];
    }else{
        cell.lbShowTextConstraintHeight.constant = defalutLabelHeight;
    }
    cell.selectionStyle  = UITableViewCellSelectionStyleNone;
    return cell;
}


- (void)didTapExpandButton:(ExpandCell *)cell {
    NSIndexPath * indexPath = [self.tableView indexPathForCell:cell];
    [self keepTableviewContentOffSetCell:cell];
    BOOL isEXpand = [[self.expandStatus objectAtIndex:indexPath.row]boolValue];
    if (!isEXpand) {
        [self.expandStatus replaceObjectAtIndex:indexPath.row withObject:@(YES)];
        [self.tableView beginUpdates];
        [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil]
                              withRowAnimation:UITableViewRowAnimationFade];
        [self.tableView endUpdates];
    }else{
        [self.expandStatus replaceObjectAtIndex:indexPath.row withObject:@(NO)];
        [self.tableView beginUpdates];
        [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil]
                              withRowAnimation:UITableViewRowAnimationFade];
        [self.tableView endUpdates];
    }
}

- (float)heightWithText:(NSString*)text {
    
    CGFloat lbContentWidth   = self.view.bounds.size.width - 25.f;
    CGSize lbContentmaxSize  = CGSizeMake(lbContentWidth, MAXFLOAT);
    NSDictionary * attribute = @{NSFontAttributeName : [UIFont systemFontOfSize:15.f]};
    CGRect rect = [text boundingRectWithSize:lbContentmaxSize
                                     options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading
                                  attributes:attribute
                                     context:nil];
    
    return rect.size.height;
}

//解决reload单一cell之后，contentoffset变化的bug
-(void)keepTableviewContentOffSetCell:(ExpandCell *)cell{
    CGRect rect = cell.frame;
    self.tableView.estimatedRowHeight = rect.size.height;
}

@end
